package com.thread.pool.core.service;

import com.thread.pool.domain.dto.ThreadPoolDataDto;
import com.thread.pool.domain.param.ThreadPoolParam;
import org.springframework.context.ConfigurableApplicationContext;

/**
 * @author yangj
 * @description: 设置线程池的方法，只能调大线程池，如果调小可能会造成线程还没执行完就被干掉了，会有问题
 * 且只能调整【核心线程数、最大线程数、队列数】
 * @date 2021/12/10
 */
public interface ThreadPoolService {


    /**
     * 根据参数重新设置线程池
     * @param dto
     */
    void reset(ThreadPoolParam dto);


    /**
     * 根据上下文容器重新设置线程池
     * 这种方式可以用来处理有配置中心的情况，可以监听配置中心数据的变化来刷新线程池
     * @param context
     */
    void resetWithContext(ConfigurableApplicationContext context);


    /**
     * 获取线程池相关数据
     */
    ThreadPoolDataDto getExecutorStatus();

}
